#include <iostream>
#include <unistd.h>
#include <signal.h>

int gcount = 0;
void hanlder(int signo)
{
    std::cout << "gcount : " << gcount << std::endl;
    int n = alarm(1); // 重设闹钟，会返回上⼀次闹钟的剩余时间
    std::cout << "剩余时间 : " << n << std::endl;
}

int main()
{
    alarm(1); // ⼀次性的闹钟，超时alarm会⾃动被取消
    signal(SIGALRM, hanlder);
    while (true)
    {
        // pause();
        // std::cout << "我醒来了..." << std::endl;
        gcount++;
    }
}

// int count = 0;
// void handler(int signumber)
// {
//     std::cout << "count : " << count << std::endl;
//     exit(0);
// }
// int main()
// {
//     signal(SIGALRM, handler);
//     alarm(1);
//     while (true)
//     {
//         count++;
//     }
//     return 0;
// }

// int main()
// {
//     int count = 0;
//     alarm(1);
//     while (true)
//     {
//         std::cout << "count : "
//         << count << std::endl;
//         count++;
//     }
//     return 0;
// }

// void handler(int signo)
// {
//     std::cout << "pid(): " << getpid() << " signo:" << signo << std::endl;
// }

// int main()
// {
//     signal(SIGABRT, handler);
//     while(true)
//     {
//         sleep(1);
//         abort();
//     }
//     return 0;
// }

// int main()
// {
//     std::cout << "pid(): " << getpid() << std::endl;
//     signal(2, handler);
//     while(true)
//     {
//         printf("**************\n");
//         sleep(1);
//     }
//     return 0;
// }

// int main()
// {
// 	while(1){
// 		printf("**************\n");
// 		sleep(1);
// 	}
// 	return 0;
// }